home *** CD-ROM | disk | FTP | other *** search
/ Turnbull China Bikeride / Turnbull China Bikeride - Disc 2.iso / STUTTGART / TEMP / GNU / bison / RpcalcRulf < prev    next >
Text File  |  1995-06-28  |  2KB  |  57 lines

  1. Rpcalc Rules
  2. Previous: <Rpcalc Decls=>RpcalcDecm> * Next: <Rpcalc Lexer=>RpcalcLexf> * Up: <RPN Calc=>RPNCalc>
  3.  
  4. #Wrap on
  5. {fH4}Grammar Rules for {fCode}rpcalc{f}{f}
  6.  
  7. Here are the grammar rules for the reverse polish notation calculator.
  8.  
  9. #Wrap off
  10. #fCode
  11. input:    \/\* empty \*\/
  12.         | input line
  13. ;
  14.  
  15. line:     '\\n'
  16.         | exp '\\n'  \{ printf ("\\t%.10g\\n", $1); \}
  17. ;
  18.  
  19. exp:      NUM             \{ $$ = $1;         \}
  20.         | exp exp '+'     \{ $$ = $1 + $2;    \}
  21.         | exp exp '-'     \{ $$ = $1 - $2;    \}
  22.         | exp exp '\*'     \{ $$ = $1 \* $2;    \}
  23.         | exp exp '\/'     \{ $$ = $1 \/ $2;    \}
  24.       \/\* Exponentiation \*\/
  25.         | exp exp '^'     \{ $$ = pow ($1, $2); \}
  26.       \/\* Unary minus    \*\/
  27.         | exp 'n'         \{ $$ = -$1;        \}
  28. ;
  29. %%
  30. #f
  31. #Wrap on
  32.  
  33. The groupings of the rpcalc ``language'' defined here are the expression
  34. (given the name {fCode}exp{f}), the line of input ({fCode}line{f}), and the
  35. complete input transcript ({fCode}input{f}).  Each of these nonterminal
  36. symbols has several alternate rules, joined by the {fEmphasis}|{f} punctuator
  37. which is read as ``or''.  The following sections explain what these rules
  38. mean.
  39.  
  40. The semantics of the language is determined by the actions taken when a
  41. grouping is recognized.  The actions are the C code that appears inside
  42. braces.  \*Note <Actions=>Actions>.
  43.  
  44. You must specify these actions in C, but Bison provides the means for
  45. passing semantic values between the rules.  In each action, the
  46. pseudo-variable {fCode}$${f} stands for the semantic value for the grouping
  47. that the rule is going to construct.  Assigning a value to {fCode}$${f} is the
  48. main job of most actions.  The semantic values of the components of the
  49. rule are referred to as {fCode}$1{f}, {fCode}$2{f}, and so on.
  50.  
  51. #Wrap off
  52. <Rpcalc Input=>RpcalcInpu>:      
  53. <Rpcalc Line=>RpcalcLine>:       
  54. <Rpcalc Expr=>RpcalcExpr>:       
  55. #Wrap on
  56.  
  57.